from django.http import HttpResponse, JsonResponse
from tools.captcha.captcha import captcha
from django.core.cache import cache
from tools.response_code import RETCODE
from tools.yuntongxun.sms import CCP
import random
import logging
logger = logging.getLogger('django')
def image_code_view(request,uuid):
    '''生成图形验证码'''
    name, text, image = captcha.generate_captcha()
    # 将图像验证码的字符，保存到缓存中，以备后期验证
    cache.set(f'imgcode{uuid}',text,100)
    return HttpResponse(image, content_type='image/jpg')


def sms_code_view(request,mobile):
    # 1 接收参数 image——code ，uuid  查询字符串
    image_code_client = request.GET.get('image_code')
    uuid = request.GET.get('uuid')
    # 2 校验参数 image——code ，uuid 是否存在 4001
    if not image_code_client or not uuid:
        return   JsonResponse({'code':RETCODE.NECESSARYPARAMERR,'errmsg':'缺少必要的参数'})
    # 3、比对图形验证码   缓存中的图形验证码 和前端传过来的图形验证码 是否一样
    image_code_server = cache.get(f'imgcode{uuid}')
    # 提取缓存中的验证码后删除缓存中的信息
    cache.delete(f'imgcode{uuid}')
    if not image_code_server:
        # 缓存中的验证码过期了
        return JsonResponse({'code': RETCODE.IMAGECODEERR, 'errmsg': '图形验证码失效'})
    if image_code_server.lower() != image_code_client.lower():
        return JsonResponse({'code': RETCODE.IMAGECODEERR, 'errmsg': '图形验证码有误'})
    # 4、发送短信验证码，并且 将短信验证码添加到缓存中
    sms_code = '%06d' % random.randint(0, 999999)
    print(sms_code)
    CCP().send_template_sms(mobile, [sms_code,5] ,1)
    #将短信验证码保存到缓存中
    cache.set(f'sms_code{mobile}',sms_code,60)
    # 5、响应的结果
    logger.info(sms_code)
    return JsonResponse({'code': RETCODE.OK, 'errmsg': '发送短信成功'})

